Skip to content

Bump wrapt from 2.1.2 to 2.2.1#910

Merged
sir-gon merged 1 commit into
mainfrom
dependabot/pip/wrapt-2.2.1
May 26, 2026
Merged

Bump wrapt from 2.1.2 to 2.2.1#910
sir-gon merged 1 commit into
mainfrom
dependabot/pip/wrapt-2.2.1

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github May 25, 2026

Warning

Dependabot will stop supporting python v3.9!

Please upgrade to one of the following versions: v3.9, v3.10, v3.11, v3.12, v3.13, or v3.14.

Bumps wrapt from 2.1.2 to 2.2.1.

Release notes

Sourced from wrapt's releases.

wrapt 2.2.1

Full release notes: https://wrapt.readthedocs.io/en/latest/changes.html#version-2-2-1

Install from PyPi (recommended):

pip install wrapt==2.2.1

PyPi uploads follow each GitHub release; if pip reports the version is unavailable, the matching PyPi upload may not have happened yet.

Pre-built wheels are provided for a range of Python versions and platforms (Linux x86_64/aarch64/riscv64, macOS x86_64 and arm64, Windows x86_64 and arm64, plus PyPy and free-threaded builds). The source distribution is also attached together with SHA256SUMS for verification.

wrapt 2.2.1rc1

Release candidate. Release notes for the upcoming 2.2.1 final (work in progress): https://wrapt.readthedocs.io/en/latest/changes.html#version-2-2-1

May be installable from PyPi:

pip install wrapt==2.2.1rc1

If pip reports the version is unavailable, this candidate either has not been uploaded yet or is not being published to PyPi. Use the attached wheels or build from the source distribution instead:

tar xf wrapt-2.2.1rc1.tar.gz
cd wrapt-2.2.1rc1
pip install .

SHA256SUMS is attached for verification of the archives.

wrapt 2.2.0

Full release notes: https://wrapt.readthedocs.io/en/latest/changes.html#version-2-2-0

Install from PyPi (recommended):

pip install wrapt==2.2.0

PyPi uploads follow each GitHub release; if pip reports the version is unavailable, the matching PyPi upload may not have happened yet.

Pre-built wheels are provided for a range of Python versions and platforms (Linux x86_64/aarch64/riscv64, macOS x86_64 and arm64, Windows x86_64 and arm64, plus PyPy and free-threaded

... (truncated)

Changelog

Sourced from wrapt's changelog.

Version 2.2.1

Bugs Fixed

  • Reverted the change in 2.2.0 which had aligned the C implementation of FunctionWrapper.__get__ with the pure Python implementation by substituting Py_None for NULL before invoking the wrapped descriptor's __get__ slot. The change was based on a misreading of what the pure Python path does once it crosses back into C. The pure Python path calls self.__wrapped__.__get__(None, owner) from Python, and for any built-in descriptor that call is dispatched through the __get__ slot wrapper inside CPython, which converts Py_None back to NULL before the wrapped descriptor's tp_descr_get is invoked. The pre 2.2.0 C path called tp_descr_get directly with obj as received, which is NULL on class access, so it was already producing the same value the Python path produces after the slot wrapper's Py_None to NULL conversion. Substituting Py_None for NULL before tp_descr_get was called caused the wrapped descriptor to see a value it would never see during ordinary class attribute lookup. Native CPython descriptors other than func_descr_get fast path on obj == NULL and return the descriptor unchanged. With Py_None substituted in they fall through to a type check against the owner type of the descriptor, and NoneType does not satisfy that check, so a TypeError is raised. This broke class attribute access for any built-in or C extension descriptor (method_descriptor, wrapper_descriptor, getset_descriptor, member_descriptor) wrapped by @wrapt.decorator or @wrapt.function_wrapper. The failure mode is most likely to show up in instrumentation libraries that monkey patch built-in methods onto classes and where some inspection or binding step then accesses the wrapped attribute through the class. The existing test suite did not catch the regression because all wrappers in the test suite are applied to pure Python functions, whose func_descr_get slot treats NULL and Py_None equivalently. A new regression test has been added which wraps a method_descriptor and exercises class attribute access, so the missing coverage of non-function descriptors is now in place. With thanks to brettlangdon <https://github.com/brettlangdon>_ for reporting the regression and identifying the underlying cause.

Version 2.2.0

A special thanks to devdanzin <https://github.com/devdanzin>_ for providing an extremely useful analysis of issues in the wrapt C extension. Their analysis led to the majority of the fixes and updates in this release and their help is much appreciated.

New Features

... (truncated)

Commits
  • 787db02 Merge branch 'release/2.2.1'
  • da8f21f Update to 2.2.1 for final release.
  • d89dce9 Skip CPython specific descriptor tests on PyPy.
  • 86f4e0e Go with 2.2.1rc1 instead of 2.2.1.dev1.
  • 94bd940 Run descriptor get tests against both implementations.
  • 00541d5 Merge branch 'develop' of github.com:GrahamDumpleton/wrapt into develop
  • daddcfe Merge pull request #341 from brettlangdon/brettlangdon/descriptor.tests
  • 0583a12 Revert Py_None substitution in C FunctionWrapper.get.
  • f8d4a2e Add test coverage for native descriptors
  • 0dbbba1 Update to 2.2.1.dev1 to test fixes.
  • Additional commits viewable in compare view

@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python Pull requests that update Python code labels May 25, 2026
@codecov
Copy link
Copy Markdown

codecov Bot commented May 25, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (e360e23) to head (de20a83).

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #910   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files          106       106           
  Lines         1884      1884           
  Branches       311       311           
=========================================
  Hits          1884      1884           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@sir-gon
Copy link
Copy Markdown
Owner

sir-gon commented May 26, 2026

@dependabot rebase.

@dependabot dependabot Bot force-pushed the dependabot/pip/wrapt-2.2.1 branch from 2842dc8 to 9ae87ca Compare May 26, 2026 04:50
Bumps [wrapt](https://github.com/GrahamDumpleton/wrapt) from 2.1.2 to 2.2.1.
- [Release notes](https://github.com/GrahamDumpleton/wrapt/releases)
- [Changelog](https://github.com/GrahamDumpleton/wrapt/blob/develop/docs/changes.rst)
- [Commits](GrahamDumpleton/wrapt@2.1.2...2.2.1)

---
updated-dependencies:
- dependency-name: wrapt
  dependency-version: 2.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot force-pushed the dependabot/pip/wrapt-2.2.1 branch from 9ae87ca to de20a83 Compare May 26, 2026 19:09
@sonarqubecloud
Copy link
Copy Markdown

@sir-gon sir-gon merged commit a1ac5e1 into main May 26, 2026
42 checks passed
@dependabot dependabot Bot deleted the dependabot/pip/wrapt-2.2.1 branch May 26, 2026 20:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python Pull requests that update Python code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant